package com.blog.admin.controller;


import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

import net.sf.json.JSONObject;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import com.blog.admin.bean.Menu;
import com.blog.admin.service.MenuService;
import com.blog.base.controller.BaseController;

import org.apache.shiro.authz.annotation.RequiresRoles;


/**
 * @todo 菜单Controller
 * @author fg
 * @date 2016年1月26日
 */
@Scope("prototype")
@Controller
@RequestMapping("menu")
public class MenuController extends BaseController
{
	@Resource
	MenuService menuService;
	/**
	 * @todo 查询所有菜单
	 * @author fg
	 * @date 2016年1月26日
	 */
	@RequiresRoles("superAdmin")
	@RequestMapping("/getMenuList")
	public ModelAndView getAllMenu() {
		
		mav.setViewName("admin/menu/menu_list");
		//mav.addObject("meunList", menuService.qeuryAllMenu());
		mav.addObject("parentMeunList", menuService.qeuryParentMenu());
		
		return mav;
	}
	
	/**
	 * @todo 添加菜单
	 * @author fg
	 * @date 2016年1月27日
	 */
	@RequiresRoles("superAdmin")
	@RequestMapping("/addMenu")
	@ResponseBody
	public JSONObject addMenu(Menu menu)
	{
		try
		{
			success = menuService.addMenu(menu);
			if(success==1)
			{
				msg="添加成功！";
			}
			else if(success==0)
			{
				msg="添加失败！";
			}
			
		} 
		catch (Exception e)
		{
			e.printStackTrace();
			msg = e.toString();
		}
		finally
		{
			json.put("success", success);
			json.put("msg", msg);
		}
		return json;
	}
	
	/**
	 * @todo menu编辑前的展示
	 * @author fg
	 * @date 2016年1月27日
	 */
	@RequiresRoles("superAdmin")
	@RequestMapping("/preModifyMenu")
	public ModelAndView preModifyMenu(HttpServletRequest request)
	{
		mav.setViewName("admin/menu/menu_edit");
		mav.addObject("parentMeunList", menuService.qeuryParentMenu());
		mav.addObject("modifyMenu",menuService.queryMenuByMenuId(Integer.parseInt(request.getParameter("mid"))));
		
		return mav;
	}
	
	/**
	 * @todo 修改menu
	 * @author fg
	 * @date 2016年1月27日
	 */
	@RequiresRoles("superAdmin")
	@RequestMapping("/modifyMenu")
	@ResponseBody
	public JSONObject modifyMenu(Menu menu)
	{
		try
		{
			success = menuService.modifyMenu(menu);
			if(success==1)
			{
				msg="修改成功！";
			}
			else if(success==0)
			{
				msg="添加失败！";
			}
			
		} 
		catch (Exception e)
		{
			e.printStackTrace();
			msg = e.toString();
		}
		finally
		{
			json.put("success", success);
			json.put("msg", msg);
		}
		
		return json;
	}
	
	/**
	 * @todo 删除菜单
	 * @author fg
	 * @date 2016年3月15日
	 */
	@RequiresRoles("superAdmin")
	@RequestMapping("/removeMenu")
	@ResponseBody
	public JSONObject removeMenu(@RequestParam("menuId")Integer menuId)
	{
		try
		{
			success = menuService.removeMenuById(menuId);
			if(success==1)
			{
				msg="删除成功！";
			}
			else if(success==0)
			{
				msg="删除成功！";
			}
			
		} 
		catch (Exception e)
		{
			e.printStackTrace();
			msg = e.toString();
		}
		finally
		{
			json.put("success", success);
			json.put("msg", msg);
		}
		
		return json;
	}
	
	/**
	 * @todo 查询父菜单
	 * @author fg
	 * @date 2016年3月23日
	 */
	@RequiresRoles("superAdmin")
	@RequestMapping("/queryParentMenu")
	@ResponseBody
	public JSONObject queryParentMenu()
	{
		json.put("menuList", menuService.qeuryParentMenu());
		return json;
	}
	
	
	
}
